package com.chb.docter.dto;

import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.hos.entity.his.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.List;

/**
 * @author: 陈海彬
 * @date: Created in 2023/12/15 11:49
 * @description:
 * @modified By:
 * @version:
 */
@ApiModel("基础，档案，病例")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PatientAllDto {

    /**
     * 病历ID
     */
    @NotBlank(message = "[病历ID]不能为空")
    @Size(max = 25, message = "编码长度不能超过25")
    @ApiModelProperty("病历ID")
    @Length(max = 25, message = "编码长度不能超过25")
    @TableId
    private String chId;
    /**
     * 医生id
     */
    @ApiModelProperty("医生id")
    private Long userId;
    /**
     * 医生姓名
     */
    @Size(max = 20, message = "编码长度不能超过20")
    @ApiModelProperty("医生姓名")
    @Length(max = 20, message = "编码长度不能超过20")
    private String userName;
    /**
     * 患者id
     */
    @Size(max = 25, message = "编码长度不能超过25")
    @ApiModelProperty("患者id")
    @Length(max = 25, message = "编码长度不能超过25")
    private String patientId;
    /**
     * 患者姓名
     */
    @Size(max = 30, message = "编码长度不能超过30")
    @ApiModelProperty("患者姓名")
    @Length(max = 30, message = "编码长度不能超过30")
    private String patientName;
    /**
     * 科室id
     */
    @ApiModelProperty("科室id")
    private Long deptId;
    /**
     * 科室名称
     */
    @Size(max = 20, message = "编码长度不能超过20")
    @ApiModelProperty("科室名称")
    @Length(max = 20, message = "编码长度不能超过20")
    private String deptName;
    /**
     *
     */
    @ApiModelProperty("")
    private String receiveType;
    /**
     * 是否传染，0否，1是 字典表属性his_contagious_status
     */
    @ApiModelProperty("是否传染，0否，1是 字典表属性his_contagious_status")
    private String isContagious;
    /**
     * 就诊时间
     */
    @ApiModelProperty("就诊时间")
    private Date careTime;
    /**
     * 发病日期
     */
    @Size(max = 15, message = "编码长度不能超过15")
    @ApiModelProperty("发病日期")
    @Length(max = 15, message = "编码长度不能超过15")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date caseDate;
    /**
     * 挂号单号
     */
    @Size(max = 25, message = "编码长度不能超过25")
    @ApiModelProperty("挂号单号")
    @Length(max = 25, message = "编码长度不能超过25")
    private String regId;
    /**
     * 主诉
     */
    @Size(max = 100, message = "编码长度不能超过100")
    @ApiModelProperty("主诉")
    @Length(max = 100, message = "编码长度不能超过100")
    private String caseTitle;
    /**
     * 诊断信息
     */
    @Size(max = 200, message = "编码长度不能超过200")
    @ApiModelProperty("诊断信息")
    @Length(max = 200, message = "编码长度不能超过200")
    private String caseResult;
    /**
     * 医生建议
     */
    @Size(max = 300, message = "编码长度不能超过300")
    @ApiModelProperty("医生建议")
    @Length(max = 300, message = "编码长度不能超过300")
    private String doctorTips;
    /**
     * 备注
     */
    @Size(max = 200, message = "编码长度不能超过200")
    @ApiModelProperty("备注")
    @Length(max = 200, message = "编码长度不能超过200")
    private String remark;


    private List<CareOrder> careOrders;
}